/**
 */
package com.logicfish.wpbench2.wpBench.impl;

import com.logicfish.wpbench2.wpBench.AbstractParam;
import com.logicfish.wpbench2.wpBench.AbstractStringParam;
import com.logicfish.wpbench2.wpBench.ActionType;
import com.logicfish.wpbench2.wpBench.AdminPage;
import com.logicfish.wpbench2.wpBench.BooleanOption;
import com.logicfish.wpbench2.wpBench.BooleanParam;
import com.logicfish.wpbench2.wpBench.ChoiceFn;
import com.logicfish.wpbench2.wpBench.ChoiceOption;
import com.logicfish.wpbench2.wpBench.ChoiceParam;
import com.logicfish.wpbench2.wpBench.ColourOption;
import com.logicfish.wpbench2.wpBench.ColourParam;
import com.logicfish.wpbench2.wpBench.CustomOption;
import com.logicfish.wpbench2.wpBench.CustomParam;
import com.logicfish.wpbench2.wpBench.CustomParamFn;
import com.logicfish.wpbench2.wpBench.DateOption;
import com.logicfish.wpbench2.wpBench.DateParam;
import com.logicfish.wpbench2.wpBench.DefaultOptionParam;
import com.logicfish.wpbench2.wpBench.FilterType;
import com.logicfish.wpbench2.wpBench.FloatOption;
import com.logicfish.wpbench2.wpBench.FloatParam;
import com.logicfish.wpbench2.wpBench.Function;
import com.logicfish.wpbench2.wpBench.FunctionArgumentList;
import com.logicfish.wpbench2.wpBench.FunctionType;
import com.logicfish.wpbench2.wpBench.IntegerOption;
import com.logicfish.wpbench2.wpBench.IntegerParam;
import com.logicfish.wpbench2.wpBench.MultiChoiceOption;
import com.logicfish.wpbench2.wpBench.Option;
import com.logicfish.wpbench2.wpBench.OptionType;
import com.logicfish.wpbench2.wpBench.Options;
import com.logicfish.wpbench2.wpBench.OptionsPage;
import com.logicfish.wpbench2.wpBench.PlainType;
import com.logicfish.wpbench2.wpBench.Plugin;
import com.logicfish.wpbench2.wpBench.RangeOption;
import com.logicfish.wpbench2.wpBench.RangeParam;
import com.logicfish.wpbench2.wpBench.SelectOption;
import com.logicfish.wpbench2.wpBench.SelectParam;
import com.logicfish.wpbench2.wpBench.ShortcodeType;
import com.logicfish.wpbench2.wpBench.StringOption;
import com.logicfish.wpbench2.wpBench.StringParam;
import com.logicfish.wpbench2.wpBench.TextOption;
import com.logicfish.wpbench2.wpBench.TextParam;
import com.logicfish.wpbench2.wpBench.URLOption;
import com.logicfish.wpbench2.wpBench.URLParam;
import com.logicfish.wpbench2.wpBench.WpBenchFactory;
import com.logicfish.wpbench2.wpBench.WpBenchPackage;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class WpBenchPackageImpl extends EPackageImpl implements WpBenchPackage
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass pluginEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass adminPageEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass optionsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass optionsPageEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass optionTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass floatOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rangeOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass multiChoiceOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass selectOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass choiceOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass urlOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass integerOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass booleanOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass dateOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass colourOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass customOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass stringOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass textOptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass defaultOptionParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass abstractStringParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass textParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass stringParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass integerParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass floatParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rangeParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass urlParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass booleanParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass dateParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass colourParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass selectParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass choiceParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass customParamFnEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass customParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass abstractParamEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass choiceFnEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass optionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass functionArgumentListEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass actionTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass filterTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass shortcodeTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass plainTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass functionTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass functionEClass = null;

  /**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see com.logicfish.wpbench2.wpBench.WpBenchPackage#eNS_URI
   * @see #init()
   * @generated
   */
  private WpBenchPackageImpl()
  {
    super(eNS_URI, WpBenchFactory.eINSTANCE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static boolean isInited = false;

  /**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link WpBenchPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
  public static WpBenchPackage init()
  {
    if (isInited) return (WpBenchPackage)EPackage.Registry.INSTANCE.getEPackage(WpBenchPackage.eNS_URI);

    // Obtain or create and register package
    WpBenchPackageImpl theWpBenchPackage = (WpBenchPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof WpBenchPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new WpBenchPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theWpBenchPackage.createPackageContents();

    // Initialize created meta-data
    theWpBenchPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theWpBenchPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(WpBenchPackage.eNS_URI, theWpBenchPackage);
    return theWpBenchPackage;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPlugin()
  {
    return pluginEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Imports()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Type()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Name()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Platform()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Title()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Version()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_PluginURI()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Description()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(7);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Author()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(8);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Skin()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(9);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Include()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(10);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Script()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(11);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_Css()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(12);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPlugin_AdminCSS()
  {
    return (EAttribute)pluginEClass.getEStructuralFeatures().get(13);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPlugin_Options()
  {
    return (EReference)pluginEClass.getEStructuralFeatures().get(14);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPlugin_OptionsPage()
  {
    return (EReference)pluginEClass.getEStructuralFeatures().get(15);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPlugin_AdminPages()
  {
    return (EReference)pluginEClass.getEStructuralFeatures().get(16);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPlugin_Functions()
  {
    return (EReference)pluginEClass.getEStructuralFeatures().get(17);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAdminPage()
  {
    return adminPageEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAdminPage_Name()
  {
    return (EAttribute)adminPageEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAdminPage_Title()
  {
    return (EAttribute)adminPageEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAdminPage_Description()
  {
    return (EAttribute)adminPageEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getOptions()
  {
    return optionsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getOptions_Options()
  {
    return (EReference)optionsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getOptionsPage()
  {
    return optionsPageEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOptionsPage_Name()
  {
    return (EAttribute)optionsPageEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOptionsPage_Site()
  {
    return (EAttribute)optionsPageEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOptionsPage_Title()
  {
    return (EAttribute)optionsPageEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOptionsPage_Header()
  {
    return (EAttribute)optionsPageEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getOptionsPage_Options()
  {
    return (EReference)optionsPageEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOptionsPage_Footer()
  {
    return (EAttribute)optionsPageEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getOptionType()
  {
    return optionTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getOptionType_Param()
  {
    return (EReference)optionTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFloatOption()
  {
    return floatOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRangeOption()
  {
    return rangeOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getMultiChoiceOption()
  {
    return multiChoiceOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSelectOption()
  {
    return selectOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChoiceOption()
  {
    return choiceOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getURLOption()
  {
    return urlOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIntegerOption()
  {
    return integerOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBooleanOption()
  {
    return booleanOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDateOption()
  {
    return dateOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getColourOption()
  {
    return colourOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCustomOption()
  {
    return customOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getStringOption()
  {
    return stringOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTextOption()
  {
    return textOptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDefaultOptionParam()
  {
    return defaultOptionParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDefaultOptionParam_Site()
  {
    return (EAttribute)defaultOptionParamEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDefaultOptionParam_DefaultValue()
  {
    return (EAttribute)defaultOptionParamEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDefaultOptionParam_Title()
  {
    return (EAttribute)defaultOptionParamEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDefaultOptionParam_Description()
  {
    return (EAttribute)defaultOptionParamEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAbstractStringParam()
  {
    return abstractStringParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTextParam()
  {
    return textParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getTextParam_Html()
  {
    return (EAttribute)textParamEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getStringParam()
  {
    return stringParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getStringParam_Max()
  {
    return (EAttribute)stringParamEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getStringParam_Min()
  {
    return (EAttribute)stringParamEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIntegerParam()
  {
    return integerParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFloatParam()
  {
    return floatParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRangeParam()
  {
    return rangeParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getURLParam()
  {
    return urlParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBooleanParam()
  {
    return booleanParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDateParam()
  {
    return dateParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getColourParam()
  {
    return colourParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSelectParam()
  {
    return selectParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSelectParam_Select()
  {
    return (EReference)selectParamEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChoiceParam()
  {
    return choiceParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceParam_Choice()
  {
    return (EReference)choiceParamEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCustomParamFn()
  {
    return customParamFnEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getCustomParamFn_Id()
  {
    return (EAttribute)customParamFnEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getCustomParamFn_Value()
  {
    return (EAttribute)customParamFnEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCustomParam()
  {
    return customParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getCustomParam_ClassName()
  {
    return (EAttribute)customParamEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getCustomParam_CustomSettings()
  {
    return (EReference)customParamEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAbstractParam()
  {
    return abstractParamEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChoiceFn()
  {
    return choiceFnEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getChoiceFn_Name()
  {
    return (EAttribute)choiceFnEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getChoiceFn_Title()
  {
    return (EAttribute)choiceFnEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getOption()
  {
    return optionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOption_Name()
  {
    return (EAttribute)optionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getOption_Type()
  {
    return (EReference)optionEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFunctionArgumentList()
  {
    return functionArgumentListEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFunctionArgumentList_Args()
  {
    return (EAttribute)functionArgumentListEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getActionType()
  {
    return actionTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getActionType_Action()
  {
    return (EAttribute)actionTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getActionType_Priority()
  {
    return (EAttribute)actionTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFilterType()
  {
    return filterTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFilterType_Filter()
  {
    return (EAttribute)filterTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFilterType_Priority()
  {
    return (EAttribute)filterTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getShortcodeType()
  {
    return shortcodeTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getShortcodeType_Code()
  {
    return (EAttribute)shortcodeTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPlainType()
  {
    return plainTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFunctionType()
  {
    return functionTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFunction()
  {
    return functionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getFunction_Type()
  {
    return (EReference)functionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFunction_Name()
  {
    return (EAttribute)functionEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getFunction_Args()
  {
    return (EReference)functionEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFunction_Body()
  {
    return (EAttribute)functionEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public WpBenchFactory getWpBenchFactory()
  {
    return (WpBenchFactory)getEFactoryInstance();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isCreated = false;

  /**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void createPackageContents()
  {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    pluginEClass = createEClass(PLUGIN);
    createEAttribute(pluginEClass, PLUGIN__IMPORTS);
    createEAttribute(pluginEClass, PLUGIN__TYPE);
    createEAttribute(pluginEClass, PLUGIN__NAME);
    createEAttribute(pluginEClass, PLUGIN__PLATFORM);
    createEAttribute(pluginEClass, PLUGIN__TITLE);
    createEAttribute(pluginEClass, PLUGIN__VERSION);
    createEAttribute(pluginEClass, PLUGIN__PLUGIN_URI);
    createEAttribute(pluginEClass, PLUGIN__DESCRIPTION);
    createEAttribute(pluginEClass, PLUGIN__AUTHOR);
    createEAttribute(pluginEClass, PLUGIN__SKIN);
    createEAttribute(pluginEClass, PLUGIN__INCLUDE);
    createEAttribute(pluginEClass, PLUGIN__SCRIPT);
    createEAttribute(pluginEClass, PLUGIN__CSS);
    createEAttribute(pluginEClass, PLUGIN__ADMIN_CSS);
    createEReference(pluginEClass, PLUGIN__OPTIONS);
    createEReference(pluginEClass, PLUGIN__OPTIONS_PAGE);
    createEReference(pluginEClass, PLUGIN__ADMIN_PAGES);
    createEReference(pluginEClass, PLUGIN__FUNCTIONS);

    adminPageEClass = createEClass(ADMIN_PAGE);
    createEAttribute(adminPageEClass, ADMIN_PAGE__NAME);
    createEAttribute(adminPageEClass, ADMIN_PAGE__TITLE);
    createEAttribute(adminPageEClass, ADMIN_PAGE__DESCRIPTION);

    optionsEClass = createEClass(OPTIONS);
    createEReference(optionsEClass, OPTIONS__OPTIONS);

    optionsPageEClass = createEClass(OPTIONS_PAGE);
    createEAttribute(optionsPageEClass, OPTIONS_PAGE__NAME);
    createEAttribute(optionsPageEClass, OPTIONS_PAGE__SITE);
    createEAttribute(optionsPageEClass, OPTIONS_PAGE__TITLE);
    createEAttribute(optionsPageEClass, OPTIONS_PAGE__HEADER);
    createEReference(optionsPageEClass, OPTIONS_PAGE__OPTIONS);
    createEAttribute(optionsPageEClass, OPTIONS_PAGE__FOOTER);

    optionTypeEClass = createEClass(OPTION_TYPE);
    createEReference(optionTypeEClass, OPTION_TYPE__PARAM);

    floatOptionEClass = createEClass(FLOAT_OPTION);

    rangeOptionEClass = createEClass(RANGE_OPTION);

    multiChoiceOptionEClass = createEClass(MULTI_CHOICE_OPTION);

    selectOptionEClass = createEClass(SELECT_OPTION);

    choiceOptionEClass = createEClass(CHOICE_OPTION);

    urlOptionEClass = createEClass(URL_OPTION);

    integerOptionEClass = createEClass(INTEGER_OPTION);

    booleanOptionEClass = createEClass(BOOLEAN_OPTION);

    dateOptionEClass = createEClass(DATE_OPTION);

    colourOptionEClass = createEClass(COLOUR_OPTION);

    customOptionEClass = createEClass(CUSTOM_OPTION);

    stringOptionEClass = createEClass(STRING_OPTION);

    textOptionEClass = createEClass(TEXT_OPTION);

    defaultOptionParamEClass = createEClass(DEFAULT_OPTION_PARAM);
    createEAttribute(defaultOptionParamEClass, DEFAULT_OPTION_PARAM__SITE);
    createEAttribute(defaultOptionParamEClass, DEFAULT_OPTION_PARAM__DEFAULT_VALUE);
    createEAttribute(defaultOptionParamEClass, DEFAULT_OPTION_PARAM__TITLE);
    createEAttribute(defaultOptionParamEClass, DEFAULT_OPTION_PARAM__DESCRIPTION);

    abstractStringParamEClass = createEClass(ABSTRACT_STRING_PARAM);

    textParamEClass = createEClass(TEXT_PARAM);
    createEAttribute(textParamEClass, TEXT_PARAM__HTML);

    stringParamEClass = createEClass(STRING_PARAM);
    createEAttribute(stringParamEClass, STRING_PARAM__MAX);
    createEAttribute(stringParamEClass, STRING_PARAM__MIN);

    integerParamEClass = createEClass(INTEGER_PARAM);

    floatParamEClass = createEClass(FLOAT_PARAM);

    rangeParamEClass = createEClass(RANGE_PARAM);

    urlParamEClass = createEClass(URL_PARAM);

    booleanParamEClass = createEClass(BOOLEAN_PARAM);

    dateParamEClass = createEClass(DATE_PARAM);

    colourParamEClass = createEClass(COLOUR_PARAM);

    selectParamEClass = createEClass(SELECT_PARAM);
    createEReference(selectParamEClass, SELECT_PARAM__SELECT);

    choiceParamEClass = createEClass(CHOICE_PARAM);
    createEReference(choiceParamEClass, CHOICE_PARAM__CHOICE);

    customParamFnEClass = createEClass(CUSTOM_PARAM_FN);
    createEAttribute(customParamFnEClass, CUSTOM_PARAM_FN__ID);
    createEAttribute(customParamFnEClass, CUSTOM_PARAM_FN__VALUE);

    customParamEClass = createEClass(CUSTOM_PARAM);
    createEAttribute(customParamEClass, CUSTOM_PARAM__CLASS_NAME);
    createEReference(customParamEClass, CUSTOM_PARAM__CUSTOM_SETTINGS);

    abstractParamEClass = createEClass(ABSTRACT_PARAM);

    choiceFnEClass = createEClass(CHOICE_FN);
    createEAttribute(choiceFnEClass, CHOICE_FN__NAME);
    createEAttribute(choiceFnEClass, CHOICE_FN__TITLE);

    optionEClass = createEClass(OPTION);
    createEAttribute(optionEClass, OPTION__NAME);
    createEReference(optionEClass, OPTION__TYPE);

    functionArgumentListEClass = createEClass(FUNCTION_ARGUMENT_LIST);
    createEAttribute(functionArgumentListEClass, FUNCTION_ARGUMENT_LIST__ARGS);

    actionTypeEClass = createEClass(ACTION_TYPE);
    createEAttribute(actionTypeEClass, ACTION_TYPE__ACTION);
    createEAttribute(actionTypeEClass, ACTION_TYPE__PRIORITY);

    filterTypeEClass = createEClass(FILTER_TYPE);
    createEAttribute(filterTypeEClass, FILTER_TYPE__FILTER);
    createEAttribute(filterTypeEClass, FILTER_TYPE__PRIORITY);

    shortcodeTypeEClass = createEClass(SHORTCODE_TYPE);
    createEAttribute(shortcodeTypeEClass, SHORTCODE_TYPE__CODE);

    plainTypeEClass = createEClass(PLAIN_TYPE);

    functionTypeEClass = createEClass(FUNCTION_TYPE);

    functionEClass = createEClass(FUNCTION);
    createEReference(functionEClass, FUNCTION__TYPE);
    createEAttribute(functionEClass, FUNCTION__NAME);
    createEReference(functionEClass, FUNCTION__ARGS);
    createEAttribute(functionEClass, FUNCTION__BODY);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isInitialized = false;

  /**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void initializePackageContents()
  {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    floatOptionEClass.getESuperTypes().add(this.getOptionType());
    rangeOptionEClass.getESuperTypes().add(this.getOptionType());
    selectOptionEClass.getESuperTypes().add(this.getOptionType());
    selectOptionEClass.getESuperTypes().add(this.getMultiChoiceOption());
    choiceOptionEClass.getESuperTypes().add(this.getOptionType());
    choiceOptionEClass.getESuperTypes().add(this.getMultiChoiceOption());
    urlOptionEClass.getESuperTypes().add(this.getOptionType());
    integerOptionEClass.getESuperTypes().add(this.getOptionType());
    booleanOptionEClass.getESuperTypes().add(this.getOptionType());
    dateOptionEClass.getESuperTypes().add(this.getOptionType());
    colourOptionEClass.getESuperTypes().add(this.getOptionType());
    customOptionEClass.getESuperTypes().add(this.getOptionType());
    stringOptionEClass.getESuperTypes().add(this.getOptionType());
    textOptionEClass.getESuperTypes().add(this.getOptionType());
    defaultOptionParamEClass.getESuperTypes().add(this.getStringParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getIntegerParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getFloatParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getRangeParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getURLParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getBooleanParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getDateParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getColourParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getSelectParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getChoiceParam());
    defaultOptionParamEClass.getESuperTypes().add(this.getCustomParam());
    textParamEClass.getESuperTypes().add(this.getAbstractStringParam());
    textParamEClass.getESuperTypes().add(this.getAbstractParam());
    stringParamEClass.getESuperTypes().add(this.getAbstractStringParam());
    stringParamEClass.getESuperTypes().add(this.getTextParam());
    stringParamEClass.getESuperTypes().add(this.getAbstractParam());
    integerParamEClass.getESuperTypes().add(this.getAbstractParam());
    floatParamEClass.getESuperTypes().add(this.getAbstractParam());
    urlParamEClass.getESuperTypes().add(this.getAbstractParam());
    booleanParamEClass.getESuperTypes().add(this.getAbstractParam());
    dateParamEClass.getESuperTypes().add(this.getAbstractParam());
    colourParamEClass.getESuperTypes().add(this.getAbstractParam());
    selectParamEClass.getESuperTypes().add(this.getAbstractParam());
    choiceParamEClass.getESuperTypes().add(this.getAbstractParam());
    customParamEClass.getESuperTypes().add(this.getAbstractParam());
    actionTypeEClass.getESuperTypes().add(this.getFunctionType());
    filterTypeEClass.getESuperTypes().add(this.getFunctionType());
    shortcodeTypeEClass.getESuperTypes().add(this.getFunctionType());
    plainTypeEClass.getESuperTypes().add(this.getFunctionType());

    // Initialize classes and features; add operations and parameters
    initEClass(pluginEClass, Plugin.class, "Plugin", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getPlugin_Imports(), ecorePackage.getEString(), "imports", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Type(), ecorePackage.getEString(), "type", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Name(), ecorePackage.getEString(), "name", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Platform(), ecorePackage.getEString(), "platform", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Title(), ecorePackage.getEString(), "title", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Version(), ecorePackage.getEString(), "version", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_PluginURI(), ecorePackage.getEString(), "pluginURI", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Description(), ecorePackage.getEString(), "description", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Author(), ecorePackage.getEString(), "author", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Skin(), ecorePackage.getEString(), "skin", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Include(), ecorePackage.getEString(), "include", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Script(), ecorePackage.getEString(), "script", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_Css(), ecorePackage.getEString(), "css", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getPlugin_AdminCSS(), ecorePackage.getEString(), "adminCSS", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPlugin_Options(), this.getOptions(), null, "options", null, 0, 1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPlugin_OptionsPage(), this.getOptionsPage(), null, "optionsPage", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPlugin_AdminPages(), this.getAdminPage(), null, "adminPages", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getPlugin_Functions(), this.getFunction(), null, "functions", null, 0, -1, Plugin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(adminPageEClass, AdminPage.class, "AdminPage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAdminPage_Name(), ecorePackage.getEString(), "name", null, 0, 1, AdminPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getAdminPage_Title(), ecorePackage.getEString(), "title", null, 0, 1, AdminPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getAdminPage_Description(), ecorePackage.getEString(), "description", null, 0, 1, AdminPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(optionsEClass, Options.class, "Options", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getOptions_Options(), this.getOption(), null, "options", null, 0, -1, Options.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(optionsPageEClass, OptionsPage.class, "OptionsPage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getOptionsPage_Name(), ecorePackage.getEString(), "name", null, 0, 1, OptionsPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getOptionsPage_Site(), ecorePackage.getEBoolean(), "site", null, 0, 1, OptionsPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getOptionsPage_Title(), ecorePackage.getEString(), "title", null, 0, 1, OptionsPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getOptionsPage_Header(), ecorePackage.getEString(), "header", null, 0, 1, OptionsPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getOptionsPage_Options(), this.getOption(), null, "options", null, 0, -1, OptionsPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getOptionsPage_Footer(), ecorePackage.getEString(), "footer", null, 0, 1, OptionsPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(optionTypeEClass, OptionType.class, "OptionType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getOptionType_Param(), this.getAbstractParam(), null, "param", null, 0, -1, OptionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(floatOptionEClass, FloatOption.class, "FloatOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(rangeOptionEClass, RangeOption.class, "RangeOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(multiChoiceOptionEClass, MultiChoiceOption.class, "MultiChoiceOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(selectOptionEClass, SelectOption.class, "SelectOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(choiceOptionEClass, ChoiceOption.class, "ChoiceOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(urlOptionEClass, URLOption.class, "URLOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(integerOptionEClass, IntegerOption.class, "IntegerOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(booleanOptionEClass, BooleanOption.class, "BooleanOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(dateOptionEClass, DateOption.class, "DateOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(colourOptionEClass, ColourOption.class, "ColourOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(customOptionEClass, CustomOption.class, "CustomOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(stringOptionEClass, StringOption.class, "StringOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(textOptionEClass, TextOption.class, "TextOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(defaultOptionParamEClass, DefaultOptionParam.class, "DefaultOptionParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getDefaultOptionParam_Site(), ecorePackage.getEBoolean(), "site", null, 0, 1, DefaultOptionParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getDefaultOptionParam_DefaultValue(), ecorePackage.getEString(), "defaultValue", null, 0, 1, DefaultOptionParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getDefaultOptionParam_Title(), ecorePackage.getEString(), "title", null, 0, 1, DefaultOptionParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getDefaultOptionParam_Description(), ecorePackage.getEString(), "description", null, 0, 1, DefaultOptionParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(abstractStringParamEClass, AbstractStringParam.class, "AbstractStringParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(textParamEClass, TextParam.class, "TextParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getTextParam_Html(), ecorePackage.getEBoolean(), "html", null, 0, 1, TextParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(stringParamEClass, StringParam.class, "StringParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getStringParam_Max(), ecorePackage.getEInt(), "max", null, 0, 1, StringParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getStringParam_Min(), ecorePackage.getEInt(), "min", null, 0, 1, StringParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(integerParamEClass, IntegerParam.class, "IntegerParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(floatParamEClass, FloatParam.class, "FloatParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(rangeParamEClass, RangeParam.class, "RangeParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(urlParamEClass, URLParam.class, "URLParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(booleanParamEClass, BooleanParam.class, "BooleanParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(dateParamEClass, DateParam.class, "DateParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(colourParamEClass, ColourParam.class, "ColourParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(selectParamEClass, SelectParam.class, "SelectParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSelectParam_Select(), this.getChoiceFn(), null, "select", null, 0, 1, SelectParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(choiceParamEClass, ChoiceParam.class, "ChoiceParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getChoiceParam_Choice(), this.getChoiceFn(), null, "choice", null, 0, 1, ChoiceParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(customParamFnEClass, CustomParamFn.class, "CustomParamFn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getCustomParamFn_Id(), ecorePackage.getEString(), "id", null, 0, 1, CustomParamFn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getCustomParamFn_Value(), ecorePackage.getEString(), "value", null, 0, 1, CustomParamFn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(customParamEClass, CustomParam.class, "CustomParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getCustomParam_ClassName(), ecorePackage.getEString(), "className", null, 0, 1, CustomParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getCustomParam_CustomSettings(), this.getCustomParamFn(), null, "customSettings", null, 0, -1, CustomParam.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(abstractParamEClass, AbstractParam.class, "AbstractParam", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(choiceFnEClass, ChoiceFn.class, "ChoiceFn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getChoiceFn_Name(), ecorePackage.getEString(), "name", null, 0, 1, ChoiceFn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getChoiceFn_Title(), ecorePackage.getEString(), "title", null, 0, 1, ChoiceFn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(optionEClass, Option.class, "Option", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getOption_Name(), ecorePackage.getEString(), "name", null, 0, 1, Option.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getOption_Type(), this.getOptionType(), null, "type", null, 0, 1, Option.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(functionArgumentListEClass, FunctionArgumentList.class, "FunctionArgumentList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getFunctionArgumentList_Args(), ecorePackage.getEString(), "args", null, 0, -1, FunctionArgumentList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(actionTypeEClass, ActionType.class, "ActionType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getActionType_Action(), ecorePackage.getEString(), "action", null, 0, 1, ActionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getActionType_Priority(), ecorePackage.getEInt(), "priority", null, 0, 1, ActionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(filterTypeEClass, FilterType.class, "FilterType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getFilterType_Filter(), ecorePackage.getEString(), "filter", null, 0, 1, FilterType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFilterType_Priority(), ecorePackage.getEInt(), "priority", null, 0, 1, FilterType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(shortcodeTypeEClass, ShortcodeType.class, "ShortcodeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getShortcodeType_Code(), ecorePackage.getEString(), "code", null, 0, 1, ShortcodeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(plainTypeEClass, PlainType.class, "PlainType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(functionTypeEClass, FunctionType.class, "FunctionType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(functionEClass, Function.class, "Function", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getFunction_Type(), this.getFunctionType(), null, "type", null, 0, 1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFunction_Name(), ecorePackage.getEString(), "name", null, 0, 1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getFunction_Args(), this.getFunctionArgumentList(), null, "args", null, 0, 1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFunction_Body(), ecorePackage.getEString(), "body", null, 0, 1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Create resource
    createResource(eNS_URI);
  }

} //WpBenchPackageImpl
